ಆಧುನಿಕ ರನ್ಟೈಮ್ ಸಿಸ್ಟಮ್ಗಳಿಗೆ ಶಕ್ತಿ ನೀಡುವ ಮೂಲಭೂತ ಗಾರ್ಬೇಜ್ ಕಲೆಕ್ಷನ್ ಅಲ್ಗಾರಿದಮ್ಗಳನ್ನು ಅನ್ವೇಷಿಸಿ, ಜಾಗತಿಕವಾಗಿ ಮೆಮೊರಿ ನಿರ್ವಹಣೆ ಮತ್ತು ಅಪ್ಲಿಕೇಶನ್ ಕಾರ್ಯಕ್ಷಮತೆಗೆ ಇದು ನಿರ್ಣಾಯಕವಾಗಿದೆ.
ರನ್ಟೈಮ್ ಸಿಸ್ಟಮ್ಸ್: ಗಾರ್ಬೇಜ್ ಕಲೆಕ್ಷನ್ ಅಲ್ಗಾರಿದಮ್ಗಳ ಒಂದು ಆಳವಾದ ನೋಟ
ಕಂಪ್ಯೂಟಿಂಗ್ನ ಜಟಿಲ ಜಗತ್ತಿನಲ್ಲಿ, ರನ್ಟೈಮ್ ಸಿಸ್ಟಮ್ಗಳು ನಮ್ಮ ಸಾಫ್ಟ್ವೇರ್ಗೆ ಜೀವ ತುಂಬುವ ಅದೃಶ್ಯ ಇಂಜಿನ್ಗಳಾಗಿವೆ. ಅವು ಸಂಪನ್ಮೂಲಗಳನ್ನು ನಿರ್ವಹಿಸುತ್ತವೆ, ಕೋಡ್ ಅನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುತ್ತವೆ, ಮತ್ತು ಅಪ್ಲಿಕೇಶನ್ಗಳ ಸುಗಮ ಕಾರ್ಯಾಚರಣೆಯನ್ನು ಖಚಿತಪಡಿಸುತ್ತವೆ. ಅನೇಕ ಆಧುನಿಕ ರನ್ಟೈಮ್ ಸಿಸ್ಟಮ್ಗಳ ಹೃದಯಭಾಗದಲ್ಲಿ ಒಂದು ನಿರ್ಣಾಯಕ ಅಂಶವಿದೆ: ಗಾರ್ಬೇಜ್ ಕಲೆಕ್ಷನ್ (ಜಿಸಿ). ಜಿಸಿ ಎಂದರೆ ಅಪ್ಲಿಕೇಶನ್ನಿಂದ ಇನ್ನು ಮುಂದೆ ಬಳಕೆಯಾಗದ ಮೆಮೊರಿಯನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಹಿಂಪಡೆಯುವ ಪ್ರಕ್ರಿಯೆ. ಇದು ಮೆಮೊರಿ ಲೀಕ್ಗಳನ್ನು ತಡೆಯುತ್ತದೆ ಮತ್ತು ಸಂಪನ್ಮೂಲಗಳ ದಕ್ಷ ಬಳಕೆಯನ್ನು ಖಾತ್ರಿಪಡಿಸುತ್ತದೆ.
ಜಗತ್ತಿನಾದ್ಯಂತ ಡೆವಲಪರ್ಗಳಿಗೆ, ಜಿಸಿ ಯನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವುದು ಕೇವಲ ಕ್ಲೀನ್ ಕೋಡ್ ಬರೆಯುವುದಕ್ಕೆ ಸೀಮಿತವಲ್ಲ; ಇದು ದೃಢವಾದ, ಕಾರ್ಯಕ್ಷಮತೆಯುಳ್ಳ, ಮತ್ತು ಸ್ಕೇಲೆಬಲ್ ಅಪ್ಲಿಕೇಶನ್ಗಳನ್ನು ನಿರ್ಮಿಸುವುದರ ಬಗ್ಗೆ. ಈ ಸಮಗ್ರ ಪರಿಶೋಧನೆಯು ಗಾರ್ಬೇಜ್ ಕಲೆಕ್ಷನ್ಗೆ ಶಕ್ತಿ ನೀಡುವ ಪ್ರಮುಖ ಪರಿಕಲ್ಪನೆಗಳು ಮತ್ತು ವಿವಿಧ ಅಲ್ಗಾರಿದಮ್ಗಳನ್ನು ಆಳವಾಗಿ ಪರಿಶೀಲಿಸುತ್ತದೆ, ಇದು ವಿವಿಧ ತಾಂತ್ರಿಕ ಹಿನ್ನೆಲೆಯ ವೃತ್ತಿಪರರಿಗೆ ಮೌಲ್ಯಯುತ ಒಳನೋಟಗಳನ್ನು ನೀಡುತ್ತದೆ.
ಮೆಮೊರಿ ನಿರ್ವಹಣೆಯ ಅನಿವಾರ್ಯತೆ
ನಿರ್ದಿಷ್ಟ ಅಲ್ಗಾರಿದಮ್ಗಳ ಬಗ್ಗೆ ತಿಳಿಯುವ ಮೊದಲು, ಮೆಮೊರಿ ನಿರ್ವಹಣೆ ಏಕೆ ಅಷ್ಟು ನಿರ್ಣಾಯಕ ಎಂಬುದನ್ನು ಗ್ರಹಿಸುವುದು ಅತ್ಯಗತ್ಯ. ಸಾಂಪ್ರದಾಯಿಕ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಮಾದರಿಗಳಲ್ಲಿ, ಡೆವಲಪರ್ಗಳು ಹಸ್ತಚಾಲಿತವಾಗಿ ಮೆಮೊರಿಯನ್ನು ಹಂಚಿಕೆ ಮಾಡುತ್ತಾರೆ ಮತ್ತು ಬಿಡುಗಡೆ ಮಾಡುತ್ತಾರೆ. ಇದು ಉತ್ತಮ ನಿಯಂತ್ರಣವನ್ನು ನೀಡಿದರೂ, ಇದು ದೋಷಗಳ ಕುಖ್ಯಾತ ಮೂಲವಾಗಿದೆ:
- ಮೆಮೊರಿ ಲೀಕ್ಸ್: ಹಂಚಿಕೆಯಾದ ಮೆಮೊರಿಯು ಇನ್ನು ಮುಂದೆ ಅಗತ್ಯವಿಲ್ಲದಿದ್ದರೂ ಸ್ಪಷ್ಟವಾಗಿ ಬಿಡುಗಡೆ ಮಾಡದಿದ್ದಾಗ, ಅದು ಆಕ್ರಮಿಸಿಕೊಂಡೇ ಇರುತ್ತದೆ, ಲಭ್ಯವಿರುವ ಮೆಮೊರಿಯ ಕ್ರಮೇಣ ಸವಕಳಿಗೆ ಕಾರಣವಾಗುತ್ತದೆ. ಕಾಲಕ್ರಮೇಣ, ಇದು ಅಪ್ಲಿಕೇಶನ್ ನಿಧಾನವಾಗಲು ಅಥವಾ ಸಂಪೂರ್ಣವಾಗಿ ಕ್ರ್ಯಾಶ್ ಆಗಲು ಕಾರಣವಾಗಬಹುದು.
- ಡ್ಯಾಂಗ್ಲಿಂಗ್ ಪಾಯಿಂಟರ್ಸ್: ಮೆಮೊರಿಯನ್ನು ಬಿಡುಗಡೆ ಮಾಡಿದರೂ, ಪಾಯಿಂಟರ್ ಇನ್ನೂ ಅದನ್ನು ಉಲ್ಲೇಖಿಸುತ್ತಿದ್ದರೆ, ಆ ಮೆಮೊರಿಯನ್ನು ಪ್ರವೇಶಿಸಲು ಪ್ರಯತ್ನಿಸುವುದು ಅನಿರೀಕ್ಷಿತ ನಡವಳಿಕೆಗೆ ಕಾರಣವಾಗುತ್ತದೆ, ಇದು ಭದ್ರತಾ ದೋಷಗಳು ಅಥವಾ ಕ್ರ್ಯಾಶ್ಗಳಿಗೆ ಕಾರಣವಾಗಬಹುದು.
- ಡಬಲ್ ಫ್ರೀ ಎರರ್ಸ್: ಈಗಾಗಲೇ ಬಿಡುಗಡೆ ಮಾಡಲಾದ ಮೆಮೊರಿಯನ್ನು ಮತ್ತೆ ಬಿಡುಗಡೆ ಮಾಡುವುದು ಸಹ ಭ್ರಷ್ಟಾಚಾರ ಮತ್ತು ಅಸ್ಥಿರತೆಗೆ ಕಾರಣವಾಗುತ್ತದೆ.
ಗಾರ್ಬೇಜ್ ಕಲೆಕ್ಷನ್ ಮೂಲಕ ಸ್ವಯಂಚಾಲಿತ ಮೆಮೊರಿ ನಿರ್ವಹಣೆಯು ಈ ಹೊರೆಗಳನ್ನು ನಿವಾರಿಸುವ ಗುರಿಯನ್ನು ಹೊಂದಿದೆ. ರನ್ಟೈಮ್ ಸಿಸ್ಟಮ್ ಬಳಕೆಯಾಗದ ಮೆಮೊರಿಯನ್ನು ಗುರುತಿಸುವ ಮತ್ತು ಹಿಂಪಡೆಯುವ ಜವಾಬ್ದಾರಿಯನ್ನು ತೆಗೆದುಕೊಳ್ಳುತ್ತದೆ, ಇದರಿಂದ ಡೆವಲಪರ್ಗಳು ಕೆಳಮಟ್ಟದ ಮೆಮೊರಿ ನಿರ್ವಹಣೆಯ ಬದಲು ಅಪ್ಲಿಕೇಶನ್ ತರ್ಕದ ಮೇಲೆ ಗಮನ ಹರಿಸಬಹುದು. ಜಾಗತಿಕ ಸಂದರ್ಭದಲ್ಲಿ ಇದು ವಿಶೇಷವಾಗಿ ಮುಖ್ಯವಾಗಿದೆ, ಅಲ್ಲಿ ವೈವಿಧ್ಯಮಯ ಹಾರ್ಡ್ವೇರ್ ಸಾಮರ್ಥ್ಯಗಳು ಮತ್ತು ನಿಯೋಜನೆ ಪರಿಸರಗಳಿಗೆ ಸ್ಥಿತಿಸ್ಥಾಪಕ ಮತ್ತು ದಕ್ಷ ಸಾಫ್ಟ್ವೇರ್ ಅಗತ್ಯವಿರುತ್ತದೆ.
ಗಾರ್ಬೇಜ್ ಕಲೆಕ್ಷನ್ನಲ್ಲಿ ಪ್ರಮುಖ ಪರಿಕಲ್ಪನೆಗಳು
ಹಲವಾರು ಮೂಲಭೂತ ಪರಿಕಲ್ಪನೆಗಳು ಎಲ್ಲಾ ಗಾರ್ಬೇಜ್ ಕಲೆಕ್ಷನ್ ಅಲ್ಗಾರಿದಮ್ಗಳಿಗೆ ಆಧಾರವಾಗಿವೆ:
1. ತಲುಪುವಿಕೆ (Reachability)
ಹೆಚ್ಚಿನ ಜಿಸಿ ಅಲ್ಗಾರಿದಮ್ಗಳ ಪ್ರಮುಖ ತತ್ವವೆಂದರೆ ತಲುಪುವಿಕೆ. ಒಂದು ಆಬ್ಜೆಕ್ಟ್ ಅನ್ನು ತಲುಪಬಲ್ಲದು ಎಂದು ಪರಿಗಣಿಸಲಾಗುತ್ತದೆ, ಒಂದು ವೇಳೆ ತಿಳಿದಿರುವ, "ಲೈವ್" ರೂಟ್ಗಳ ಸೆಟ್ನಿಂದ ಆ ಆಬ್ಜೆಕ್ಟ್ಗೆ ಒಂದು ಮಾರ್ಗವಿದ್ದರೆ. ರೂಟ್ಗಳು ಸಾಮಾನ್ಯವಾಗಿ ಇವುಗಳನ್ನು ಒಳಗೊಂಡಿರುತ್ತವೆ:
- ಜಾಗತಿಕ ವೇರಿಯಬಲ್ಗಳು
- ಎಕ್ಸಿಕ್ಯೂಶನ್ ಸ್ಟಾಕ್ನಲ್ಲಿರುವ ಸ್ಥಳೀಯ ವೇರಿಯಬಲ್ಗಳು
- ಸಿಪಿಯು ರಿಜಿಸ್ಟರ್ಗಳು
- ಸ್ಟ್ಯಾಟಿಕ್ ವೇರಿಯಬಲ್ಗಳು
ಈ ರೂಟ್ಗಳಿಂದ ತಲುಪಲು ಸಾಧ್ಯವಾಗದ ಯಾವುದೇ ಆಬ್ಜೆಕ್ಟ್ ಅನ್ನು ಗಾರ್ಬೇಜ್ ಎಂದು ಪರಿಗಣಿಸಲಾಗುತ್ತದೆ ಮತ್ತು ಅದನ್ನು ಹಿಂಪಡೆಯಬಹುದು.
2. ಗಾರ್ಬೇಜ್ ಕಲೆಕ್ಷನ್ ಚಕ್ರ
ಒಂದು ವಿಶಿಷ್ಟ ಜಿಸಿ ಚಕ್ರವು ಹಲವಾರು ಹಂತಗಳನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ:
- ಮಾರ್ಕಿಂಗ್: ಜಿಸಿ ರೂಟ್ಗಳಿಂದ ಪ್ರಾರಂಭಿಸಿ ಆಬ್ಜೆಕ್ಟ್ ಗ್ರಾಫ್ ಅನ್ನು ಸಂಚರಿಸುತ್ತದೆ, ತಲುಪಬಹುದಾದ ಎಲ್ಲಾ ಆಬ್ಜೆಕ್ಟ್ಗಳನ್ನು ಗುರುತಿಸುತ್ತದೆ (ಮಾರ್ಕ್ ಮಾಡುತ್ತದೆ).
- ಸ್ವೀಪಿಂಗ್ (ಅಥವಾ ಕಾಂಪ್ಯಾಕ್ಟಿಂಗ್): ಮಾರ್ಕಿಂಗ್ ನಂತರ, ಜಿಸಿ ಮೆಮೊರಿಯ ಮೂಲಕ ಹೋಗುತ್ತದೆ. ಗುರುತು ಮಾಡದ ಆಬ್ಜೆಕ್ಟ್ಗಳನ್ನು (ಗಾರ್ಬೇಜ್) ಹಿಂಪಡೆಯಲಾಗುತ್ತದೆ. ಕೆಲವು ಅಲ್ಗಾರಿದಮ್ಗಳಲ್ಲಿ, ತಲುಪಬಹುದಾದ ಆಬ್ಜೆಕ್ಟ್ಗಳನ್ನು ಫ್ರಾಗ್ಮೆಂಟೇಶನ್ ಕಡಿಮೆ ಮಾಡಲು ನಿರಂತರ ಮೆಮೊರಿ ಸ್ಥಳಗಳಿಗೆ (ಕಾಂಪ್ಯಾಕ್ಷನ್) ಸರಿಸಲಾಗುತ್ತದೆ.
3. ವಿರಾಮಗಳು (Pauses)
ಜಿಸಿ ಯಲ್ಲಿನ ಒಂದು ಮಹತ್ವದ ಸವಾಲು ಸ್ಟಾಪ್-ದಿ-ವರ್ಲ್ಡ್ (STW) ವಿರಾಮಗಳು. ಈ ವಿರಾಮಗಳ ಸಮಯದಲ್ಲಿ, ಅಪ್ಲಿಕೇಶನ್ನ ಕಾರ್ಯನಿರ್ವಹಣೆಯನ್ನು ನಿಲ್ಲಿಸಲಾಗುತ್ತದೆ, ಇದರಿಂದ ಜಿಸಿ ತನ್ನ ಕಾರ್ಯಗಳನ್ನು ಯಾವುದೇ ಅಡಚಣೆಯಿಲ್ಲದೆ ನಿರ್ವಹಿಸಬಹುದು. ದೀರ್ಘವಾದ STW ವಿರಾಮಗಳು ಅಪ್ಲಿಕೇಶನ್ ಸ್ಪಂದನಶೀಲತೆಯ ಮೇಲೆ ಗಮನಾರ್ಹವಾಗಿ ಪರಿಣಾಮ ಬೀರಬಹುದು, ಇದು ಯಾವುದೇ ಜಾಗತಿಕ ಮಾರುಕಟ್ಟೆಯಲ್ಲಿ ಬಳಕೆದಾರ-ಮುಖಿ ಅಪ್ಲಿಕೇಶನ್ಗಳಿಗೆ ನಿರ್ಣಾಯಕ ಕಾಳಜಿಯಾಗಿದೆ.
ಪ್ರಮುಖ ಗಾರ್ಬೇಜ್ ಕಲೆಕ್ಷನ್ ಅಲ್ಗಾರಿದಮ್ಗಳು
ವರ್ಷಗಳಲ್ಲಿ, ವಿವಿಧ ಜಿಸಿ ಅಲ್ಗಾರಿದಮ್ಗಳನ್ನು ಅಭಿವೃದ್ಧಿಪಡಿಸಲಾಗಿದೆ, ಪ್ರತಿಯೊಂದಕ್ಕೂ ತನ್ನದೇ ಆದ ಸಾಮರ್ಥ್ಯಗಳು ಮತ್ತು ದೌರ್ಬಲ್ಯಗಳಿವೆ. ನಾವು ಕೆಲವು ಪ್ರಚಲಿತವಾದವುಗಳನ್ನು ಅನ್ವೇಷಿಸೋಣ:
1. ಮಾರ್ಕ್-ಅಂಡ್-ಸ್ವೀಪ್
ಮಾರ್ಕ್-ಅಂಡ್-ಸ್ವೀಪ್ ಅಲ್ಗಾರಿದಮ್ ಅತ್ಯಂತ ಹಳೆಯ ಮತ್ತು ಮೂಲಭೂತ ಜಿಸಿ ತಂತ್ರಗಳಲ್ಲಿ ಒಂದಾಗಿದೆ. ಇದು ಎರಡು ವಿಭಿನ್ನ ಹಂತಗಳಲ್ಲಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ:
- ಮಾರ್ಕ್ ಹಂತ: ಜಿಸಿ ರೂಟ್ ಸೆಟ್ನಿಂದ ಪ್ರಾರಂಭವಾಗಿ ಸಂಪೂರ್ಣ ಆಬ್ಜೆಕ್ಟ್ ಗ್ರಾಫ್ ಅನ್ನು ಸಂಚರಿಸುತ್ತದೆ. ಎದುರಾದ ಪ್ರತಿಯೊಂದು ಆಬ್ಜೆಕ್ಟ್ ಅನ್ನು ಮಾರ್ಕ್ ಮಾಡಲಾಗುತ್ತದೆ.
- ಸ್ವೀಪ್ ಹಂತ: ನಂತರ ಜಿಸಿ ಸಂಪೂರ್ಣ ಹೀಪ್ ಅನ್ನು ಸ್ಕ್ಯಾನ್ ಮಾಡುತ್ತದೆ. ಮಾರ್ಕ್ ಮಾಡದ ಯಾವುದೇ ಆಬ್ಜೆಕ್ಟ್ ಅನ್ನು ಗಾರ್ಬೇಜ್ ಎಂದು ಪರಿಗಣಿಸಿ ಹಿಂಪಡೆಯಲಾಗುತ್ತದೆ. ಹಿಂಪಡೆದ ಮೆಮೊರಿಯನ್ನು ಭವಿಷ್ಯದ ಹಂಚಿಕೆಗಳಿಗಾಗಿ ಫ್ರೀ ಲಿಸ್ಟ್ಗೆ ಸೇರಿಸಲಾಗುತ್ತದೆ.
ಅನುಕೂಲಗಳು:
- ಪರಿಕಲ್ಪನಾತ್ಮಕವಾಗಿ ಸರಳ ಮತ್ತು ವ್ಯಾಪಕವಾಗಿ ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲಾಗಿದೆ.
- ಚಕ್ರೀಯ ಡೇಟಾ ರಚನೆಗಳನ್ನು ಪರಿಣಾಮಕಾರಿಯಾಗಿ ನಿಭಾಯಿಸುತ್ತದೆ.
ಅನಾನುಕೂಲಗಳು:
- ಕಾರ್ಯಕ್ಷಮತೆ: ಇದು ಸಂಪೂರ್ಣ ಹೀಪ್ ಅನ್ನು ಸಂಚರಿಸಬೇಕಾದ್ದರಿಂದ ಮತ್ತು ಎಲ್ಲಾ ಮೆಮೊರಿಯನ್ನು ಸ್ಕ್ಯಾನ್ ಮಾಡಬೇಕಾದ್ದರಿಂದ ನಿಧಾನವಾಗಬಹುದು.
- ಫ್ರಾಗ್ಮೆಂಟೇಶನ್: ಆಬ್ಜೆಕ್ಟ್ಗಳನ್ನು ವಿವಿಧ ಸ್ಥಳಗಳಲ್ಲಿ ಹಂಚಿಕೆ ಮಾಡಿ ಮತ್ತು ಬಿಡುಗಡೆ ಮಾಡಿದಾಗ ಮೆಮೊರಿಯು ಫ್ರಾಗ್ಮೆಂಟ್ ಆಗುತ್ತದೆ, ಒಟ್ಟು ಉಚಿತ ಮೆಮೊರಿ ಸಾಕಷ್ಟಿದ್ದರೂ ಹಂಚಿಕೆ ವಿಫಲಗೊಳ್ಳುವ ಸಾಧ್ಯತೆಯಿದೆ.
- STW ವಿರಾಮಗಳು: ಸಾಮಾನ್ಯವಾಗಿ ದೀರ್ಘವಾದ ಸ್ಟಾಪ್-ದಿ-ವರ್ಲ್ಡ್ ವಿರಾಮಗಳನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ, ವಿಶೇಷವಾಗಿ ದೊಡ್ಡ ಹೀಪ್ಗಳಲ್ಲಿ.
ಉದಾಹರಣೆ: ಜಾವಾದ ಗಾರ್ಬೇಜ್ ಕಲೆಕ್ಟರ್ನ ಆರಂಭಿಕ ಆವೃತ್ತಿಗಳು ಮೂಲಭೂತ ಮಾರ್ಕ್-ಅಂಡ್-ಸ್ವೀಪ್ ವಿಧಾನವನ್ನು ಬಳಸುತ್ತಿದ್ದವು.
2. ಮಾರ್ಕ್-ಅಂಡ್-ಕಾಂಪ್ಯಾಕ್ಟ್
ಮಾರ್ಕ್-ಅಂಡ್-ಸ್ವೀಪ್ನ ಫ್ರಾಗ್ಮೆಂಟೇಶನ್ ಸಮಸ್ಯೆಯನ್ನು ಪರಿಹರಿಸಲು, ಮಾರ್ಕ್-ಅಂಡ್-ಕಾಂಪ್ಯಾಕ್ಟ್ ಅಲ್ಗಾರಿದಮ್ ಮೂರನೇ ಹಂತವನ್ನು ಸೇರಿಸುತ್ತದೆ:
- ಮಾರ್ಕ್ ಹಂತ: ಮಾರ್ಕ್-ಅಂಡ್-ಸ್ವೀಪ್ನಂತೆಯೇ, ಇದು ತಲುಪಬಹುದಾದ ಎಲ್ಲಾ ಆಬ್ಜೆಕ್ಟ್ಗಳನ್ನು ಮಾರ್ಕ್ ಮಾಡುತ್ತದೆ.
- ಕಾಂಪ್ಯಾಕ್ಟ್ ಹಂತ: ಮಾರ್ಕಿಂಗ್ ನಂತರ, ಜಿಸಿ ಎಲ್ಲಾ ಮಾರ್ಕ್ ಮಾಡಿದ (ತಲುಪಬಹುದಾದ) ಆಬ್ಜೆಕ್ಟ್ಗಳನ್ನು ನಿರಂತರ ಮೆಮೊರಿ ಬ್ಲಾಕ್ಗಳಿಗೆ ಸರಿಸುತ್ತದೆ. ಇದು ಫ್ರಾಗ್ಮೆಂಟೇಶನ್ ಅನ್ನು ನಿವಾರಿಸುತ್ತದೆ.
- ಸ್ವೀಪ್ ಹಂತ: ನಂತರ ಜಿಸಿ ಮೆಮೊರಿಯನ್ನು ಸ್ವೀಪ್ ಮಾಡುತ್ತದೆ. ಆಬ್ಜೆಕ್ಟ್ಗಳನ್ನು ಕಾಂಪ್ಯಾಕ್ಟ್ ಮಾಡಿರುವುದರಿಂದ, ಉಚಿತ ಮೆಮೊರಿಯು ಈಗ ಹೀಪ್ನ ಕೊನೆಯಲ್ಲಿ ಒಂದೇ ನಿರಂತರ ಬ್ಲಾಕ್ ಆಗಿರುತ್ತದೆ, ಇದು ಭವಿಷ್ಯದ ಹಂಚಿಕೆಗಳನ್ನು ಅತ್ಯಂತ ವೇಗವಾಗಿಸುತ್ತದೆ.
ಅನುಕೂಲಗಳು:
- ಮೆಮೊರಿ ಫ್ರಾಗ್ಮೆಂಟೇಶನ್ ಅನ್ನು ನಿವಾರಿಸುತ್ತದೆ.
- ನಂತರದ ಹಂಚಿಕೆಗಳು ವೇಗವಾಗಿರುತ್ತವೆ.
- ಇನ್ನೂ ಚಕ್ರೀಯ ಡೇಟಾ ರಚನೆಗಳನ್ನು ನಿಭಾಯಿಸುತ್ತದೆ.
ಅನಾನುಕೂಲಗಳು:
- ಕಾರ್ಯಕ್ಷಮತೆ: ಕಾಂಪ್ಯಾಕ್ಷನ್ ಹಂತವು ಗಣನಾತ್ಮಕವಾಗಿ ದುಬಾರಿಯಾಗಬಹುದು, ಏಕೆಂದರೆ ಇದು ಮೆಮೊರಿಯಲ್ಲಿ ಸಂಭಾವ್ಯವಾಗಿ ಅನೇಕ ಆಬ್ಜೆಕ್ಟ್ಗಳನ್ನು ಸರಿಸುವುದನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ.
- STW ವಿರಾಮಗಳು: ಆಬ್ಜೆಕ್ಟ್ಗಳನ್ನು ಸರಿಸಬೇಕಾದ ಕಾರಣ ಇನ್ನೂ ಗಮನಾರ್ಹವಾದ STW ವಿರಾಮಗಳನ್ನು ಅನುಭವಿಸುತ್ತದೆ.
ಉದಾಹರಣೆ: ಈ ವಿಧಾನವು ಅನೇಕ ಮುಂದುವರಿದ ಕಲೆಕ್ಟರ್ಗಳಿಗೆ ಮೂಲಭೂತವಾಗಿದೆ.
3. ಕಾಪಿಯಿಂಗ್ ಗಾರ್ಬೇಜ್ ಕಲೆಕ್ಷನ್
ಕಾಪಿಯಿಂಗ್ ಜಿಸಿ ಹೀಪ್ ಅನ್ನು ಎರಡು ಜಾಗಗಳಾಗಿ ವಿಂಗಡಿಸುತ್ತದೆ: ಫ್ರಮ್-ಸ್ಪೇಸ್ ಮತ್ತು ಟು-ಸ್ಪೇಸ್. ಸಾಮಾನ್ಯವಾಗಿ, ಹೊಸ ಆಬ್ಜೆಕ್ಟ್ಗಳನ್ನು ಫ್ರಮ್-ಸ್ಪೇಸ್ನಲ್ಲಿ ಹಂಚಲಾಗುತ್ತದೆ.
- ಕಾಪಿಯಿಂಗ್ ಹಂತ: ಜಿಸಿ ಟ್ರಿಗರ್ ಆದಾಗ, ಜಿಸಿ ರೂಟ್ಗಳಿಂದ ಪ್ರಾರಂಭಿಸಿ ಫ್ರಮ್-ಸ್ಪೇಸ್ ಅನ್ನು ಸಂಚರಿಸುತ್ತದೆ. ತಲುಪಬಹುದಾದ ಆಬ್ಜೆಕ್ಟ್ಗಳನ್ನು ಫ್ರಮ್-ಸ್ಪೇಸ್ನಿಂದ ಟು-ಸ್ಪೇಸ್ಗೆ ನಕಲಿಸಲಾಗುತ್ತದೆ.
- ಸ್ಪೇಸ್ಗಳನ್ನು ವಿನಿಮಯ ಮಾಡುವುದು: ಎಲ್ಲಾ ತಲುಪಬಹುದಾದ ಆಬ್ಜೆಕ್ಟ್ಗಳನ್ನು ನಕಲಿಸಿದ ನಂತರ, ಫ್ರಮ್-ಸ್ಪೇಸ್ ಕೇವಲ ಗಾರ್ಬೇಜ್ ಅನ್ನು ಹೊಂದಿರುತ್ತದೆ ಮತ್ತು ಟು-ಸ್ಪೇಸ್ ಎಲ್ಲಾ ಲೈವ್ ಆಬ್ಜೆಕ್ಟ್ಗಳನ್ನು ಹೊಂದಿರುತ್ತದೆ. ನಂತರ ಸ್ಪೇಸ್ಗಳ ಪಾತ್ರಗಳನ್ನು ವಿನಿಮಯ ಮಾಡಲಾಗುತ್ತದೆ. ಹಳೆಯ ಫ್ರಮ್-ಸ್ಪೇಸ್ ಹೊಸ ಟು-ಸ್ಪೇಸ್ ಆಗುತ್ತದೆ, ಮುಂದಿನ ಚಕ್ರಕ್ಕೆ ಸಿದ್ಧವಾಗಿರುತ್ತದೆ.
ಅನುಕೂಲಗಳು:
- ಫ್ರಾಗ್ಮೆಂಟೇಶನ್ ಇಲ್ಲ: ಆಬ್ಜೆಕ್ಟ್ಗಳನ್ನು ಯಾವಾಗಲೂ ನಿರಂತರವಾಗಿ ನಕಲಿಸಲಾಗುತ್ತದೆ, ಆದ್ದರಿಂದ ಟು-ಸ್ಪೇಸ್ನಲ್ಲಿ ಯಾವುದೇ ಫ್ರಾಗ್ಮೆಂಟೇಶನ್ ಇರುವುದಿಲ್ಲ.
- ವೇಗದ ಹಂಚಿಕೆ: ಪ್ರಸ್ತುತ ಹಂಚಿಕೆ ಜಾಗದಲ್ಲಿ ಕೇವಲ ಪಾಯಿಂಟರ್ ಅನ್ನು ಬಂಪ್ ಮಾಡುವುದರಿಂದ ಹಂಚಿಕೆಗಳು ವೇಗವಾಗಿರುತ್ತವೆ.
ಅನಾನುಕೂಲಗಳು:
- ಸ್ಥಳದ ಓವರ್ಹೆಡ್: ಎರಡು ಸ್ಪೇಸ್ಗಳು ಸಕ್ರಿಯವಾಗಿರುವುದರಿಂದ, ಒಂದೇ ಹೀಪ್ಗೆ ಹೋಲಿಸಿದರೆ ದುಪ್ಪಟ್ಟು ಮೆಮೊರಿ ಅಗತ್ಯವಿರುತ್ತದೆ.
- ಕಾರ್ಯಕ್ಷಮತೆ: ಅನೇಕ ಆಬ್ಜೆಕ್ಟ್ಗಳು ಜೀವಂತವಾಗಿದ್ದರೆ ದುಬಾರಿಯಾಗಬಹುದು, ಏಕೆಂದರೆ ಎಲ್ಲಾ ಲೈವ್ ಆಬ್ಜೆಕ್ಟ್ಗಳನ್ನು ನಕಲಿಸಬೇಕು.
- STW ವಿರಾಮಗಳು: ಇನ್ನೂ STW ವಿರಾಮಗಳು ಬೇಕಾಗುತ್ತವೆ.
ಉದಾಹರಣೆ: ಜನರೇಷನಲ್ ಗಾರ್ಬೇಜ್ ಕಲೆಕ್ಟರ್ಗಳಲ್ಲಿ 'ಯಂಗ್' ಜನರೇಷನ್ ಸಂಗ್ರಹಿಸಲು ಇದನ್ನು ಹೆಚ್ಚಾಗಿ ಬಳಸಲಾಗುತ್ತದೆ.
4. ಜನರೇಷನಲ್ ಗಾರ್ಬೇಜ್ ಕಲೆಕ್ಷನ್
ಈ ವಿಧಾನವು ಜನರೇಷನಲ್ ಹೈಪೋಥಿಸಿಸ್ ಅನ್ನು ಆಧರಿಸಿದೆ, ಇದು ಹೆಚ್ಚಿನ ಆಬ್ಜೆಕ್ಟ್ಗಳು ಬಹಳ ಕಡಿಮೆ ಜೀವಿತಾವಧಿಯನ್ನು ಹೊಂದಿರುತ್ತವೆ ಎಂದು ಹೇಳುತ್ತದೆ. ಜನರೇಷನಲ್ ಜಿಸಿ ಹೀಪ್ ಅನ್ನು ಬಹು ತಲೆಮಾರುಗಳಾಗಿ ವಿಂಗಡಿಸುತ್ತದೆ:
- ಯಂಗ್ ಜನರೇಷನ್: ಇಲ್ಲಿ ಹೊಸ ಆಬ್ಜೆಕ್ಟ್ಗಳನ್ನು ಹಂಚಲಾಗುತ್ತದೆ. ಇಲ್ಲಿ ಜಿಸಿ ಸಂಗ್ರಹಣೆಗಳು ಆಗಾಗ್ಗೆ ಮತ್ತು ವೇಗವಾಗಿರುತ್ತವೆ (ಮೈನರ್ ಜಿಸಿಗಳು).
- ಓಲ್ಡ್ ಜನರೇಷನ್: ಹಲವಾರು ಮೈನರ್ ಜಿಸಿಗಳಿಂದ ಉಳಿದುಕೊಂಡ ಆಬ್ಜೆಕ್ಟ್ಗಳನ್ನು ಓಲ್ಡ್ ಜನರೇಷನ್ಗೆ ಬಡ್ತಿ ನೀಡಲಾಗುತ್ತದೆ. ಇಲ್ಲಿ ಜಿಸಿ ಸಂಗ್ರಹಣೆಗಳು ಕಡಿಮೆ ಆಗಾಗ್ಗೆ ಮತ್ತು ಹೆಚ್ಚು ಸಂಪೂರ್ಣವಾಗಿರುತ್ತವೆ (ಮೇಜರ್ ಜಿಸಿಗಳು).
ಇದು ಹೇಗೆ ಕೆಲಸ ಮಾಡುತ್ತದೆ:
- ಹೊಸ ಆಬ್ಜೆಕ್ಟ್ಗಳನ್ನು ಯಂಗ್ ಜನರೇಷನ್ನಲ್ಲಿ ಹಂಚಲಾಗುತ್ತದೆ.
- ಮೈನರ್ ಜಿಸಿಗಳನ್ನು (ಸಾಮಾನ್ಯವಾಗಿ ಕಾಪಿಯಿಂಗ್ ಕಲೆಕ್ಟರ್ ಬಳಸಿ) ಯಂಗ್ ಜನರೇಷನ್ನಲ್ಲಿ ಆಗಾಗ್ಗೆ ನಡೆಸಲಾಗುತ್ತದೆ. ಉಳಿದುಕೊಂಡ ಆಬ್ಜೆಕ್ಟ್ಗಳನ್ನು ಓಲ್ಡ್ ಜನರೇಷನ್ಗೆ ಬಡ್ತಿ ನೀಡಲಾಗುತ್ತದೆ.
- ಮೇಜರ್ ಜಿಸಿಗಳನ್ನು ಓಲ್ಡ್ ಜನರೇಷನ್ನಲ್ಲಿ ಕಡಿಮೆ ಆಗಾಗ್ಗೆ ನಡೆಸಲಾಗುತ್ತದೆ, ಸಾಮಾನ್ಯವಾಗಿ ಮಾರ್ಕ್-ಅಂಡ್-ಸ್ವೀಪ್ ಅಥವಾ ಮಾರ್ಕ್-ಅಂಡ್-ಕಾಂಪ್ಯಾಕ್ಟ್ ಬಳಸಿ.
ಅನುಕೂಲಗಳು:
- ಸುಧಾರಿತ ಕಾರ್ಯಕ್ಷಮತೆ: ಸಂಪೂರ್ಣ ಹೀಪ್ ಅನ್ನು ಸಂಗ್ರಹಿಸುವ ಆವರ್ತನವನ್ನು ಗಮನಾರ್ಹವಾಗಿ ಕಡಿಮೆ ಮಾಡುತ್ತದೆ. ಹೆಚ್ಚಿನ ಗಾರ್ಬೇಜ್ ಯಂಗ್ ಜನರೇಷನ್ನಲ್ಲಿ ಕಂಡುಬರುತ್ತದೆ, ಅದನ್ನು ತ್ವರಿತವಾಗಿ ಸಂಗ್ರಹಿಸಲಾಗುತ್ತದೆ.
- ಕಡಿಮೆ ವಿರಾಮದ ಸಮಯಗಳು: ಮೈನರ್ ಜಿಸಿಗಳು ಪೂರ್ಣ ಹೀಪ್ ಜಿಸಿಗಳಿಗಿಂತ ಚಿಕ್ಕದಾಗಿರುತ್ತವೆ.
ಅನಾನುಕೂಲಗಳು:
- ಸಂಕೀರ್ಣತೆ: ಕಾರ್ಯಗತಗೊಳಿಸಲು ಹೆಚ್ಚು ಸಂಕೀರ್ಣವಾಗಿದೆ.
- ಬಡ್ತಿ ಓವರ್ಹೆಡ್: ಮೈನರ್ ಜಿಸಿಗಳಲ್ಲಿ ಉಳಿದುಕೊಳ್ಳುವ ಆಬ್ಜೆಕ್ಟ್ಗಳು ಬಡ್ತಿ ವೆಚ್ಚವನ್ನು ಅನುಭವಿಸುತ್ತವೆ.
- ರಿಮೆಂಬರ್ಡ್ ಸೆಟ್ಸ್: ಓಲ್ಡ್ ಜನರೇಷನ್ನಿಂದ ಯಂಗ್ ಜನರೇಷನ್ಗೆ ಆಬ್ಜೆಕ್ಟ್ ಉಲ್ಲೇಖಗಳನ್ನು ನಿರ್ವಹಿಸಲು, "ರಿಮೆಂಬರ್ಡ್ ಸೆಟ್ಸ್" ಅಗತ್ಯವಿದೆ, ಇದು ಓವರ್ಹೆಡ್ ಅನ್ನು ಸೇರಿಸಬಹುದು.
ಉದಾಹರಣೆ: ಜಾವಾ ವರ್ಚುವಲ್ ಮೆಷಿನ್ (ಜೆವಿಎಂ) ಜನರೇಷನಲ್ ಜಿಸಿ ಯನ್ನು ವ್ಯಾಪಕವಾಗಿ ಬಳಸುತ್ತದೆ (ಉದಾ. ಥ್ರೂಪುಟ್ ಕಲೆಕ್ಟರ್, ಸಿಎಂಎಸ್, ಜಿ1, ಝೆಡ್ಜಿಸಿ).
5. ರೆಫರೆನ್ಸ್ ಕೌಂಟಿಂಗ್
ತಲುಪುವಿಕೆಯನ್ನು ಟ್ರೇಸ್ ಮಾಡುವ ಬದಲು, ರೆಫರೆನ್ಸ್ ಕೌಂಟಿಂಗ್ ಪ್ರತಿಯೊಂದು ಆಬ್ಜೆಕ್ಟ್ಗೆ ಒಂದು ಕೌಂಟ್ ಅನ್ನು ಸಂಯೋಜಿಸುತ್ತದೆ, ಇದು ಅದಕ್ಕೆ ಎಷ್ಟು ರೆಫರೆನ್ಸ್ಗಳು ಪಾಯಿಂಟ್ ಮಾಡುತ್ತವೆ ಎಂಬುದನ್ನು ಸೂಚಿಸುತ್ತದೆ. ಒಂದು ಆಬ್ಜೆಕ್ಟ್ನ ರೆಫರೆನ್ಸ್ ಕೌಂಟ್ ಶೂನ್ಯಕ್ಕೆ ಇಳಿದಾಗ ಅದನ್ನು ಗಾರ್ಬೇಜ್ ಎಂದು ಪರಿಗಣಿಸಲಾಗುತ್ತದೆ.
- ಹೆಚ್ಚಳ: ಒಂದು ಆಬ್ಜೆಕ್ಟ್ಗೆ ಹೊಸ ರೆಫರೆನ್ಸ್ ಮಾಡಿದಾಗ, ಅದರ ರೆಫರೆನ್ಸ್ ಕೌಂಟ್ ಹೆಚ್ಚಾಗುತ್ತದೆ.
- ಕಡಿತ: ಒಂದು ಆಬ್ಜೆಕ್ಟ್ಗೆ ಇರುವ ರೆಫರೆನ್ಸ್ ತೆಗೆದುಹಾಕಿದಾಗ, ಅದರ ಕೌಂಟ್ ಕಡಿಮೆಯಾಗುತ್ತದೆ. ಕೌಂಟ್ ಶೂನ್ಯವಾದರೆ, ಆಬ್ಜೆಕ್ಟ್ ಅನ್ನು ತಕ್ಷಣವೇ ಬಿಡುಗಡೆ ಮಾಡಲಾಗುತ್ತದೆ.
ಅನುಕೂಲಗಳು:
- ಯಾವುದೇ ವಿರಾಮಗಳಿಲ್ಲ: ರೆಫರೆನ್ಸ್ಗಳನ್ನು ತೆಗೆದುಹಾಕಿದಂತೆ ಹಂತ ಹಂತವಾಗಿ ಡಿಅಲೋಕೇಶನ್ ನಡೆಯುತ್ತದೆ, ಇದರಿಂದ ದೀರ್ಘವಾದ STW ವಿರಾಮಗಳನ್ನು ತಪ್ಪಿಸಬಹುದು.
- ಸರಳತೆ: ಪರಿಕಲ್ಪನಾತ್ಮಕವಾಗಿ ನೇರವಾಗಿದೆ.
ಅನಾನುಕೂಲಗಳು:
- ಚಕ್ರೀಯ ಉಲ್ಲೇಖಗಳು: ಇದರ ಪ್ರಮುಖ ನ್ಯೂನತೆಯೆಂದರೆ ಚಕ್ರೀಯ ಡೇಟಾ ರಚನೆಗಳನ್ನು ಸಂಗ್ರಹಿಸಲು ಅಸಮರ್ಥತೆ. ಆಬ್ಜೆಕ್ಟ್ A, B ಗೆ ಪಾಯಿಂಟ್ ಮಾಡಿದರೆ ಮತ್ತು B, A ಗೆ ಪಾಯಿಂಟ್ ಮಾಡಿದರೆ, ಯಾವುದೇ ಬಾಹ್ಯ ರೆಫರೆನ್ಸ್ಗಳು ಇಲ್ಲದಿದ್ದರೂ, ಅವುಗಳ ರೆಫರೆನ್ಸ್ ಕೌಂಟ್ಗಳು ಎಂದಿಗೂ ಶೂನ್ಯವನ್ನು ತಲುಪುವುದಿಲ್ಲ, ಇದು ಮೆಮೊರಿ ಲೀಕ್ಗಳಿಗೆ ಕಾರಣವಾಗುತ್ತದೆ.
- ಓವರ್ಹೆಡ್: ಕೌಂಟ್ಗಳನ್ನು ಹೆಚ್ಚಿಸುವುದು ಮತ್ತು ಕಡಿಮೆ ಮಾಡುವುದು ಪ್ರತಿ ರೆಫರೆನ್ಸ್ ಕಾರ್ಯಾಚರಣೆಗೆ ಓವರ್ಹೆಡ್ ಅನ್ನು ಸೇರಿಸುತ್ತದೆ.
- ಅನಿರೀಕ್ಷಿತ ನಡವಳಿಕೆ: ರೆಫರೆನ್ಸ್ ಕಡಿತಗಳ ಕ್ರಮವು ಅನಿರೀಕ್ಷಿತವಾಗಿರಬಹುದು, ಇದು ಮೆಮೊರಿಯನ್ನು ಯಾವಾಗ ಹಿಂಪಡೆಯಲಾಗುತ್ತದೆ ಎಂಬುದರ ಮೇಲೆ ಪರಿಣಾಮ ಬೀರುತ್ತದೆ.
ಉದಾಹರಣೆ: ಸ್ವಿಫ್ಟ್ (ARC - ಆಟೋಮ್ಯಾಟಿಕ್ ರೆಫರೆನ್ಸ್ ಕೌಂಟಿಂಗ್), ಪೈಥಾನ್ ಮತ್ತು ಆಬ್ಜೆಕ್ಟಿವ್-ಸಿ ಯಲ್ಲಿ ಬಳಸಲಾಗುತ್ತದೆ.
6. ಇನ್ಕ್ರಿಮೆಂಟಲ್ ಗಾರ್ಬೇಜ್ ಕಲೆಕ್ಷನ್
STW ವಿರಾಮದ ಸಮಯವನ್ನು ಮತ್ತಷ್ಟು ಕಡಿಮೆ ಮಾಡಲು, ಇನ್ಕ್ರಿಮೆಂಟಲ್ ಜಿಸಿ ಅಲ್ಗಾರಿದಮ್ಗಳು ಜಿಸಿ ಕೆಲಸವನ್ನು ಸಣ್ಣ ತುಣುಕುಗಳಲ್ಲಿ ನಿರ್ವಹಿಸುತ್ತವೆ, ಜಿಸಿ ಕಾರ್ಯಾಚರಣೆಗಳನ್ನು ಅಪ್ಲಿಕೇಶನ್ ಎಕ್ಸಿಕ್ಯೂಶನ್ನೊಂದಿಗೆ ಬೆರೆಸುತ್ತವೆ. ಇದು ವಿರಾಮದ ಸಮಯವನ್ನು ಚಿಕ್ಕದಾಗಿಡಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ.
- ಹಂತ ಹಂತದ ಕಾರ್ಯಾಚರಣೆಗಳು: ಮಾರ್ಕ್ ಮತ್ತು ಸ್ವೀಪ್/ಕಾಂಪ್ಯಾಕ್ಟ್ ಹಂತಗಳನ್ನು ಸಣ್ಣ ಹಂತಗಳಾಗಿ ವಿಂಗಡಿಸಲಾಗುತ್ತದೆ.
- ಇಂಟರ್ಲೀವ್ ಮಾಡುವುದು: ಅಪ್ಲಿಕೇಶನ್ ಥ್ರೆಡ್ ಜಿಸಿ ಕೆಲಸದ ಚಕ್ರಗಳ ನಡುವೆ ಕಾರ್ಯನಿರ್ವಹಿಸಬಹುದು.
ಅನುಕೂಲಗಳು:
- ಚಿಕ್ಕ ವಿರಾಮಗಳು: STW ವಿರಾಮಗಳ ಅವಧಿಯನ್ನು ಗಮನಾರ್ಹವಾಗಿ ಕಡಿಮೆ ಮಾಡುತ್ತದೆ.
- ಸುಧಾರಿತ ಸ್ಪಂದನಶೀಲತೆ: ಸಂವಾದಾತ್ಮಕ ಅಪ್ಲಿಕೇಶನ್ಗಳಿಗೆ ಉತ್ತಮ.
ಅನಾನುಕೂಲಗಳು:
- ಸಂಕೀರ್ಣತೆ: ಸಾಂಪ್ರದಾಯಿಕ ಅಲ್ಗಾರಿದಮ್ಗಳಿಗಿಂತ ಕಾರ್ಯಗತಗೊಳಿಸಲು ಹೆಚ್ಚು ಸಂಕೀರ್ಣವಾಗಿದೆ.
- ಕಾರ್ಯಕ್ಷಮತೆಯ ಓವರ್ಹೆಡ್: ಜಿಸಿ ಮತ್ತು ಅಪ್ಲಿಕೇಶನ್ ಥ್ರೆಡ್ಗಳ ನಡುವೆ ಸಮನ್ವಯದ ಅಗತ್ಯದಿಂದಾಗಿ ಕೆಲವು ಓವರ್ಹೆಡ್ ಅನ್ನು ಪರಿಚಯಿಸಬಹುದು.
ಉದಾಹರಣೆ: ಹಳೆಯ ಜೆವಿಎಂ ಆವೃತ್ತಿಗಳಲ್ಲಿನ ಕನ್ಕರೆಂಟ್ ಮಾರ್ಕ್ ಸ್ವೀಪ್ (ಸಿಎಂಎಸ್) ಕಲೆಕ್ಟರ್ ಇನ್ಕ್ರಿಮೆಂಟಲ್ ಕಲೆಕ್ಷನ್ನ ಆರಂಭಿಕ ಪ್ರಯತ್ನವಾಗಿತ್ತು.
7. ಕನ್ಕರೆಂಟ್ ಗಾರ್ಬೇಜ್ ಕಲೆಕ್ಷನ್
ಕನ್ಕರೆಂಟ್ ಜಿಸಿ ಅಲ್ಗಾರಿದಮ್ಗಳು ತಮ್ಮ ಹೆಚ್ಚಿನ ಕೆಲಸವನ್ನು ಅಪ್ಲಿಕೇಶನ್ ಥ್ರೆಡ್ಗಳೊಂದಿಗೆ ಏಕಕಾಲದಲ್ಲಿ ನಿರ್ವಹಿಸುತ್ತವೆ. ಇದರರ್ಥ ಜಿಸಿ ಮೆಮೊರಿಯನ್ನು ಗುರುತಿಸುತ್ತಿರುವಾಗ ಮತ್ತು ಹಿಂಪಡೆಯುತ್ತಿರುವಾಗ ಅಪ್ಲಿಕೇಶನ್ ಚಾಲನೆಯಲ್ಲಿರುತ್ತದೆ.
- ಸಮನ್ವಯಿತ ಕೆಲಸ: ಜಿಸಿ ಥ್ರೆಡ್ಗಳು ಮತ್ತು ಅಪ್ಲಿಕೇಶನ್ ಥ್ರೆಡ್ಗಳು ಸಮಾನಾಂತರವಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತವೆ.
- ಸಮನ್ವಯ ಯಾಂತ್ರಿಕತೆಗಳು: ಸ್ಥಿರತೆಯನ್ನು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಲು ಅತ್ಯಾಧುನಿಕ ಯಾಂತ್ರಿಕತೆಗಳು ಬೇಕಾಗುತ್ತವೆ, ಉದಾಹರಣೆಗೆ ಟ್ರೈ-ಕಲರ್ ಮಾರ್ಕಿಂಗ್ ಅಲ್ಗಾರಿದಮ್ಗಳು ಮತ್ತು ರೈಟ್ ಬ್ಯಾರಿಯರ್ಗಳು (ಇವು ಅಪ್ಲಿಕೇಶನ್ನಿಂದ ಮಾಡಲಾದ ಆಬ್ಜೆಕ್ಟ್ ರೆಫರೆನ್ಸ್ಗಳಲ್ಲಿನ ಬದಲಾವಣೆಗಳನ್ನು ಟ್ರ್ಯಾಕ್ ಮಾಡುತ್ತವೆ).
ಅನುಕೂಲಗಳು:
- ಕನಿಷ್ಠ STW ವಿರಾಮಗಳು: ಅತ್ಯಂತ ಚಿಕ್ಕ ಅಥವಾ "ವಿರಾಮ-ರಹಿತ" ಕಾರ್ಯಾಚರಣೆಯನ್ನು ಗುರಿಯಾಗಿಸಿಕೊಂಡಿದೆ.
- ಹೆಚ್ಚಿನ ಥ್ರೂಪುಟ್ ಮತ್ತು ಸ್ಪಂದನಶೀಲತೆ: ಕಟ್ಟುನಿಟ್ಟಾದ ಲೇಟೆನ್ಸಿ ಅವಶ್ಯಕತೆಗಳನ್ನು ಹೊಂದಿರುವ ಅಪ್ಲಿಕೇಶನ್ಗಳಿಗೆ ಅತ್ಯುತ್ತಮ.
ಅನಾನುಕೂಲಗಳು:
- ಸಂಕೀರ್ಣತೆ: ಸರಿಯಾಗಿ ವಿನ್ಯಾಸಗೊಳಿಸಲು ಮತ್ತು ಕಾರ್ಯಗತಗೊಳಿಸಲು ಅತ್ಯಂತ ಸಂಕೀರ್ಣ.
- ಥ್ರೂಪುಟ್ ಕಡಿತ: ಕನ್ಕರೆಂಟ್ ಕಾರ್ಯಾಚರಣೆಗಳು ಮತ್ತು ಸಮನ್ವಯದ ಓವರ್ಹೆಡ್ನಿಂದಾಗಿ ಕೆಲವೊಮ್ಮೆ ಒಟ್ಟಾರೆ ಅಪ್ಲಿಕೇಶನ್ ಥ್ರೂಪುಟ್ ಅನ್ನು ಕಡಿಮೆ ಮಾಡಬಹುದು.
- ಮೆಮೊರಿ ಓವರ್ಹೆಡ್: ಬದಲಾವಣೆಗಳನ್ನು ಟ್ರ್ಯಾಕ್ ಮಾಡಲು ಹೆಚ್ಚುವರಿ ಮೆಮೊರಿ ಬೇಕಾಗಬಹುದು.
ಉದಾಹರಣೆ: ಜಾವಾದಲ್ಲಿನ ಜಿ1, ಝೆಡ್ಜಿಸಿ, ಮತ್ತು ಶೆನನ್ಡೋವಾದಂತಹ ಆಧುನಿಕ ಕಲೆಕ್ಟರ್ಗಳು, ಮತ್ತು ಗೋ ಹಾಗೂ .ನೆಟ್ ಕೋರ್ನಲ್ಲಿನ ಜಿಸಿ ಹೆಚ್ಚು ಕನ್ಕರೆಂಟ್ ಆಗಿವೆ.
8. ಜಿ1 (ಗಾರ್ಬೇಜ್-ಫಸ್ಟ್) ಕಲೆಕ್ಟರ್
ಜಾವಾ 7 ರಲ್ಲಿ ಪರಿಚಯಿಸಲಾದ ಮತ್ತು ಜಾವಾ 9 ರಲ್ಲಿ ಡೀಫಾಲ್ಟ್ ಆದ ಜಿ1 ಕಲೆಕ್ಟರ್, ಥ್ರೂಪುಟ್ ಮತ್ತು ಲೇಟೆನ್ಸಿಯನ್ನು ಸಮತೋಲನಗೊಳಿಸಲು ವಿನ್ಯಾಸಗೊಳಿಸಲಾದ ಸರ್ವರ್-ಶೈಲಿಯ, ರೀಜನ್-ಆಧಾರಿತ, ಜನರೇಷನಲ್, ಮತ್ತು ಕನ್ಕರೆಂಟ್ ಕಲೆಕ್ಟರ್ ಆಗಿದೆ.
- ರೀಜನ್-ಆಧಾರಿತ: ಹೀಪ್ ಅನ್ನು ಹಲವಾರು ಸಣ್ಣ ರೀಜನ್ಗಳಾಗಿ ವಿಂಗಡಿಸುತ್ತದೆ. ರೀಜನ್ಗಳು ಈಡನ್, ಸರ್ವೈವರ್ ಅಥವಾ ಓಲ್ಡ್ ಆಗಿರಬಹುದು.
- ಜನರೇಷನಲ್: ಜನರೇಷನಲ್ ಗುಣಲಕ್ಷಣಗಳನ್ನು ನಿರ್ವಹಿಸುತ್ತದೆ.
- ಕನ್ಕರೆಂಟ್ ಮತ್ತು ಸಮಾನಾಂತರ: ಹೆಚ್ಚಿನ ಕೆಲಸವನ್ನು ಅಪ್ಲಿಕೇಶನ್ ಥ್ರೆಡ್ಗಳೊಂದಿಗೆ ಕನ್ಕರೆಂಟ್ ಆಗಿ ಮಾಡುತ್ತದೆ ಮತ್ತು ಇವಾಕ್ಯುಯೇಶನ್ಗಾಗಿ (ಲೈವ್ ಆಬ್ಜೆಕ್ಟ್ಗಳನ್ನು ನಕಲಿಸಲು) ಬಹು ಥ್ರೆಡ್ಗಳನ್ನು ಬಳಸುತ್ತದೆ.
- ಗುರಿ-ಆಧಾರಿತ: ಬಳಕೆದಾರರಿಗೆ ಬಯಸಿದ ವಿರಾಮ ಸಮಯದ ಗುರಿಯನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸಲು ಅನುಮತಿಸುತ್ತದೆ. ಜಿ1 ಮೊದಲು ಹೆಚ್ಚು ಗಾರ್ಬೇಜ್ ಇರುವ ರೀಜನ್ಗಳನ್ನು ಸಂಗ್ರಹಿಸುವ ಮೂಲಕ ಈ ಗುರಿಯನ್ನು ಸಾಧಿಸಲು ಪ್ರಯತ್ನಿಸುತ್ತದೆ (ಆದ್ದರಿಂದ "ಗಾರ್ಬೇಜ್-ಫಸ್ಟ್").
ಅನುಕೂಲಗಳು:
- ಸಮತೋಲಿತ ಕಾರ್ಯಕ್ಷಮತೆ: ವ್ಯಾಪಕ ಶ್ರೇಣಿಯ ಅಪ್ಲಿಕೇಶನ್ಗಳಿಗೆ ಒಳ್ಳೆಯದು.
- ಊಹಿಸಬಹುದಾದ ವಿರಾಮ ಸಮಯಗಳು: ಹಳೆಯ ಕಲೆಕ್ಟರ್ಗಳಿಗೆ ಹೋಲಿಸಿದರೆ ವಿರಾಮ ಸಮಯದ ಊಹಿಸುವಿಕೆ ಗಮನಾರ್ಹವಾಗಿ ಸುಧಾರಿಸಿದೆ.
- ದೊಡ್ಡ ಹೀಪ್ಗಳನ್ನು ಚೆನ್ನಾಗಿ ನಿಭಾಯಿಸುತ್ತದೆ: ದೊಡ್ಡ ಹೀಪ್ ಗಾತ್ರಗಳೊಂದಿಗೆ ಪರಿಣಾಮಕಾರಿಯಾಗಿ ಸ್ಕೇಲ್ ಆಗುತ್ತದೆ.
ಅನಾನುಕೂಲಗಳು:
- ಸಂಕೀರ್ಣತೆ: ಅಂತರ್ಗತವಾಗಿ ಸಂಕೀರ್ಣ.
- ದೀರ್ಘ ವಿರಾಮಗಳ ಸಾಧ್ಯತೆ: ಗುರಿಯ ವಿರಾಮ ಸಮಯವು ಆಕ್ರಮಣಕಾರಿಯಾಗಿದ್ದರೆ ಮತ್ತು ಹೀಪ್ ಲೈವ್ ಆಬ್ಜೆಕ್ಟ್ಗಳಿಂದ ಹೆಚ್ಚು ಫ್ರಾಗ್ಮೆಂಟ್ ಆಗಿದ್ದರೆ, ಒಂದೇ ಜಿಸಿ ಚಕ್ರವು ಗುರಿಯನ್ನು ಮೀರಬಹುದು.
ಉದಾಹರಣೆ: ಅನೇಕ ಆಧುನಿಕ ಜಾವಾ ಅಪ್ಲಿಕೇಶನ್ಗಳಿಗೆ ಡೀಫಾಲ್ಟ್ ಜಿಸಿ.
9. ಝೆಡ್ಜಿಸಿ ಮತ್ತು ಶೆನನ್ಡೋವಾ
ಇವು ಅತ್ಯಂತ ಕಡಿಮೆ ವಿರಾಮ ಸಮಯಕ್ಕಾಗಿ ವಿನ್ಯಾಸಗೊಳಿಸಲಾದ ಇತ್ತೀಚಿನ, ಸುಧಾರಿತ ಗಾರ್ಬೇಜ್ ಕಲೆಕ್ಟರ್ಗಳಾಗಿವೆ, ಆಗಾಗ್ಗೆ ಉಪ-ಮಿಲಿಸೆಕೆಂಡ್ ವಿರಾಮಗಳನ್ನು ಗುರಿಯಾಗಿರಿಸಿಕೊಳ್ಳುತ್ತವೆ, ಅತಿ ದೊಡ್ಡ ಹೀಪ್ಗಳಲ್ಲೂ (ಟೆರಾಬೈಟ್ಗಳು).
- ಲೋಡ್-ಟೈಮ್ ಕಾಂಪ್ಯಾಕ್ಷನ್: ಅವು ಅಪ್ಲಿಕೇಶನ್ನೊಂದಿಗೆ ಕನ್ಕರೆಂಟ್ ಆಗಿ ಕಾಂಪ್ಯಾಕ್ಷನ್ ಅನ್ನು ನಿರ್ವಹಿಸುತ್ತವೆ.
- ಹೆಚ್ಚು ಕನ್ಕರೆಂಟ್: ಬಹುತೇಕ ಎಲ್ಲಾ ಜಿಸಿ ಕೆಲಸಗಳು ಕನ್ಕರೆಂಟ್ ಆಗಿ ನಡೆಯುತ್ತವೆ.
- ರೀಜನ್-ಆಧಾರಿತ: ಜಿ1 ನಂತೆಯೇ ರೀಜನ್-ಆಧಾರಿತ ವಿಧಾನವನ್ನು ಬಳಸುತ್ತವೆ.
ಅನುಕೂಲಗಳು:
- ಅತಿ-ಕಡಿಮೆ ಲೇಟೆನ್ಸಿ: ಅತ್ಯಂತ ಚಿಕ್ಕ, ಸ್ಥಿರವಾದ ವಿರಾಮ ಸಮಯಗಳನ್ನು ಗುರಿಯಾಗಿಸಿಕೊಂಡಿವೆ.
- ಸ್ಕೇಲೆಬಿಲಿಟಿ: ಬೃಹತ್ ಹೀಪ್ಗಳನ್ನು ಹೊಂದಿರುವ ಅಪ್ಲಿಕೇಶನ್ಗಳಿಗೆ ಅತ್ಯುತ್ತಮ.
ಅನಾನುಕೂಲಗಳು:
- ಥ್ರೂಪುಟ್ ಪರಿಣಾಮ: ಥ್ರೂಪುಟ್-ಆಧಾರಿತ ಕಲೆಕ್ಟರ್ಗಳಿಗಿಂತ ಸ್ವಲ್ಪ ಹೆಚ್ಚು ಸಿಪಿಯು ಓವರ್ಹೆಡ್ ಹೊಂದಿರಬಹುದು.
- ಪರಿಪಕ್ವತೆ: ತುಲನಾತ್ಮಕವಾಗಿ ಹೊಸತಾದರೂ, ವೇಗವಾಗಿ ಪ್ರಬುದ್ಧವಾಗುತ್ತಿವೆ.
ಉದಾಹರಣೆ: ಝೆಡ್ಜಿಸಿ ಮತ್ತು ಶೆನನ್ಡೋವಾ ಓಪನ್ಜೆಡಿಕೆಯ ಇತ್ತೀಚಿನ ಆವೃತ್ತಿಗಳಲ್ಲಿ ಲಭ್ಯವಿದ್ದು, ಹಣಕಾಸು ಟ್ರೇಡಿಂಗ್ ಪ್ಲಾಟ್ಫಾರ್ಮ್ಗಳು ಅಥವಾ ಜಾಗತಿಕ ಪ್ರೇಕ್ಷಕರಿಗೆ ಸೇವೆ ಸಲ್ಲಿಸುವ ದೊಡ್ಡ ಪ್ರಮಾಣದ ವೆಬ್ ಸೇವೆಗಳಂತಹ ಲೇಟೆನ್ಸಿ-ಸೂಕ್ಷ್ಮ ಅಪ್ಲಿಕೇಶನ್ಗಳಿಗೆ ಸೂಕ್ತವಾಗಿವೆ.
ವಿವಿಧ ರನ್ಟೈಮ್ ಪರಿಸರಗಳಲ್ಲಿ ಗಾರ್ಬೇಜ್ ಕಲೆಕ್ಷನ್
ತತ್ವಗಳು ಸಾರ್ವತ್ರಿಕವಾಗಿದ್ದರೂ, ಜಿಸಿಯ ಅನುಷ್ಠಾನ ಮತ್ತು ಸೂಕ್ಷ್ಮ ವ್ಯತ್ಯಾಸಗಳು ವಿವಿಧ ರನ್ಟೈಮ್ ಪರಿಸರಗಳಲ್ಲಿ ಭಿನ್ನವಾಗಿರುತ್ತವೆ:
- ಜಾವಾ ವರ್ಚುವಲ್ ಮೆಷಿನ್ (ಜೆವಿಎಂ): ಐತಿಹಾಸಿಕವಾಗಿ, ಜಿಸಿಯ ಆವಿಷ್ಕಾರದಲ್ಲಿ ಜೆವಿಎಂ ಮುಂಚೂಣಿಯಲ್ಲಿದೆ. ಇದು ಪ್ಲಗ್ ಮಾಡಬಹುದಾದ ಜಿಸಿ ಆರ್ಕಿಟೆಕ್ಚರ್ ಅನ್ನು ನೀಡುತ್ತದೆ, ಡೆವಲಪರ್ಗಳಿಗೆ ಅವರ ಅಪ್ಲಿಕೇಶನ್ನ ಅಗತ್ಯಗಳಿಗೆ ಅನುಗುಣವಾಗಿ ವಿವಿಧ ಕಲೆಕ್ಟರ್ಗಳಿಂದ (ಸೀರಿಯಲ್, ಪ್ಯಾರಲಲ್, ಸಿಎಂಎಸ್, ಜಿ1, ಝೆಡ್ಜಿಸಿ, ಶೆನನ್ಡೋವಾ) ಆಯ್ಕೆ ಮಾಡಲು ಅನುವು ಮಾಡಿಕೊಡುತ್ತದೆ. ಈ ನಮ್ಯತೆಯು ವೈವಿಧ್ಯಮಯ ಜಾಗತಿಕ ನಿಯೋಜನೆ ಸನ್ನಿವೇಶಗಳಲ್ಲಿ ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ಅತ್ಯುತ್ತಮವಾಗಿಸಲು ನಿರ್ಣಾಯಕವಾಗಿದೆ.
- .ನೆಟ್ ಕಾಮನ್ ಲ್ಯಾಂಗ್ವೇಜ್ ರನ್ಟೈಮ್ (ಸಿಎಲ್ಆರ್): .ನೆಟ್ ಸಿಎಲ್ಆರ್ ಸಹ ಅತ್ಯಾಧುನಿಕ ಜಿಸಿ ಯನ್ನು ಹೊಂದಿದೆ. ಇದು ಜನರೇಷನಲ್ ಮತ್ತು ಕಾಂಪ್ಯಾಕ್ಟಿಂಗ್ ಗಾರ್ಬೇಜ್ ಕಲೆಕ್ಷನ್ ಎರಡನ್ನೂ ನೀಡುತ್ತದೆ. ಸಿಎಲ್ಆರ್ ಜಿಸಿ ವರ್ಕ್ಸ್ಟೇಷನ್ ಮೋಡ್ನಲ್ಲಿ (ಕ್ಲೈಂಟ್ ಅಪ್ಲಿಕೇಶನ್ಗಳಿಗಾಗಿ ಆಪ್ಟಿಮೈಸ್ ಮಾಡಲಾಗಿದೆ) ಅಥವಾ ಸರ್ವರ್ ಮೋಡ್ನಲ್ಲಿ (ಮಲ್ಟಿ-ಪ್ರೊಸೆಸರ್ ಸರ್ವರ್ ಅಪ್ಲಿಕೇಶನ್ಗಳಿಗಾಗಿ ಆಪ್ಟಿಮೈಸ್ ಮಾಡಲಾಗಿದೆ) ಕಾರ್ಯನಿರ್ವಹಿಸಬಹುದು. ಇದು ವಿರಾಮಗಳನ್ನು ಕಡಿಮೆ ಮಾಡಲು ಕನ್ಕರೆಂಟ್ ಮತ್ತು ಹಿನ್ನೆಲೆ ಗಾರ್ಬೇಜ್ ಕಲೆಕ್ಷನ್ ಅನ್ನು ಸಹ ಬೆಂಬಲಿಸುತ್ತದೆ.
- ಗೋ ರನ್ಟೈಮ್: ಗೋ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆಯು ಕನ್ಕರೆಂಟ್, ಟ್ರೈ-ಕಲರ್ ಮಾರ್ಕ್-ಅಂಡ್-ಸ್ವೀಪ್ ಗಾರ್ಬೇಜ್ ಕಲೆಕ್ಟರ್ ಅನ್ನು ಬಳಸುತ್ತದೆ. ಇದನ್ನು ಕಡಿಮೆ ಲೇಟೆನ್ಸಿ ಮತ್ತು ಹೆಚ್ಚಿನ ಕನ್ಕರೆನ್ಸಿಗಾಗಿ ವಿನ್ಯಾಸಗೊಳಿಸಲಾಗಿದೆ, ಇದು ದಕ್ಷ ಕನ್ಕರೆಂಟ್ ಸಿಸ್ಟಮ್ಗಳನ್ನು ನಿರ್ಮಿಸುವ ಗೋ ತತ್ವಶಾಸ್ತ್ರಕ್ಕೆ ಅನುಗುಣವಾಗಿದೆ. ಗೋ ಜಿಸಿ ವಿರಾಮಗಳನ್ನು ಅತ್ಯಂತ ಚಿಕ್ಕದಾಗಿ, ಸಾಮಾನ್ಯವಾಗಿ ಮೈಕ್ರೋಸೆಕೆಂಡ್ಗಳ ಕ್ರಮದಲ್ಲಿ ಇರಿಸುವ ಗುರಿಯನ್ನು ಹೊಂದಿದೆ.
- ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ಎಂಜಿನ್ಗಳು (ವಿ8, ಸ್ಪೈಡರ್ಮಂಕಿ): ಬ್ರೌಸರ್ಗಳು ಮತ್ತು ನೋಡ್.ಜೆಎಸ್ನಲ್ಲಿನ ಆಧುನಿಕ ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ಎಂಜಿನ್ಗಳು ಜನರೇಷನಲ್ ಗಾರ್ಬೇಜ್ ಕಲೆಕ್ಟರ್ಗಳನ್ನು ಬಳಸುತ್ತವೆ. ಅವು ಮಾರ್ಕ್-ಅಂಡ್-ಸ್ವೀಪ್ನಂತಹ ತಂತ್ರಗಳನ್ನು ಬಳಸುತ್ತವೆ ಮತ್ತು ಯುಐ ಸಂವಾದಗಳನ್ನು ಸ್ಪಂದಿಸುವಂತೆ ಇರಿಸಲು ಹೆಚ್ಚಾಗಿ ಇನ್ಕ್ರಿಮೆಂಟಲ್ ಕಲೆಕ್ಷನ್ ಅನ್ನು ಅಳವಡಿಸಿಕೊಳ್ಳುತ್ತವೆ.
ಸರಿಯಾದ ಜಿಸಿ ಅಲ್ಗಾರಿದಮ್ ಅನ್ನು ಆರಿಸುವುದು
ಸೂಕ್ತವಾದ ಜಿಸಿ ಅಲ್ಗಾರಿದಮ್ ಅನ್ನು ಆಯ್ಕೆ ಮಾಡುವುದು ಒಂದು ನಿರ್ಣಾಯಕ ನಿರ್ಧಾರವಾಗಿದ್ದು, ಇದು ಅಪ್ಲಿಕೇಶನ್ ಕಾರ್ಯಕ್ಷಮತೆ, ಸ್ಕೇಲೆಬಿಲಿಟಿ ಮತ್ತು ಬಳಕೆದಾರರ ಅನುಭವದ ಮೇಲೆ ಪರಿಣಾಮ ಬೀರುತ್ತದೆ. ಎಲ್ಲದಕ್ಕೂ ಒಂದೇ ಪರಿಹಾರವಿಲ್ಲ. ಈ ಅಂಶಗಳನ್ನು ಪರಿಗಣಿಸಿ:
- ಅಪ್ಲಿಕೇಶನ್ ಅವಶ್ಯಕತೆಗಳು: ನಿಮ್ಮ ಅಪ್ಲಿಕೇಶನ್ ಲೇಟೆನ್ಸಿ-ಸೂಕ್ಷ್ಮವಾಗಿದೆಯೇ (ಉದಾ., ರಿಯಲ್-ಟೈಮ್ ಟ್ರೇಡಿಂಗ್, ಸಂವಾದಾತ್ಮಕ ವೆಬ್ ಸೇವೆಗಳು) ಅಥವಾ ಥ್ರೂಪುಟ್-ಆಧಾರಿತವಾಗಿದೆಯೇ (ಉದಾ., ಬ್ಯಾಚ್ ಪ್ರೊಸೆಸಿಂಗ್, ವೈಜ್ಞಾನಿಕ ಕಂಪ್ಯೂಟಿಂಗ್)?
- ಹೀಪ್ ಗಾತ್ರ: ಅತ್ಯಂತ ದೊಡ್ಡ ಹೀಪ್ಗಳಿಗೆ (ಹತ್ತಾರು ಅಥವಾ ನೂರಾರು ಗಿಗಾಬೈಟ್ಗಳು), ಸ್ಕೇಲೆಬಿಲಿಟಿ ಮತ್ತು ಕಡಿಮೆ ಲೇಟೆನ್ಸಿಗಾಗಿ ವಿನ್ಯಾಸಗೊಳಿಸಲಾದ ಕಲೆಕ್ಟರ್ಗಳು (ಜಿ1, ಝೆಡ್ಜಿಸಿ, ಶೆನನ್ಡೋವಾದಂತಹವು) ಹೆಚ್ಚಾಗಿ ಆದ್ಯತೆ ಪಡೆಯುತ್ತವೆ.
- ಕನ್ಕರೆನ್ಸಿ ಅಗತ್ಯಗಳು: ನಿಮ್ಮ ಅಪ್ಲಿಕೇಶನ್ಗೆ ಹೆಚ್ಚಿನ ಮಟ್ಟದ ಕನ್ಕರೆನ್ಸಿ ಅಗತ್ಯವಿದೆಯೇ? ಕನ್ಕರೆಂಟ್ ಜಿಸಿ ಪ್ರಯೋಜನಕಾರಿಯಾಗಬಹುದು.
- ಅಭಿವೃದ್ಧಿ ಪ್ರಯತ್ನ: ಸರಳವಾದ ಅಲ್ಗಾರಿದಮ್ಗಳನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವುದು ಸುಲಭವಾಗಬಹುದು, ಆದರೆ ಆಗಾಗ್ಗೆ ಕಾರ್ಯಕ್ಷಮತೆಯ ವ್ಯಾಪಾರ-ವಹಿವಾಟುಗಳೊಂದಿಗೆ ಬರುತ್ತವೆ. ಮುಂದುವರಿದ ಕಲೆಕ್ಟರ್ಗಳು ಉತ್ತಮ ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ನೀಡುತ್ತವೆ ಆದರೆ ಹೆಚ್ಚು ಸಂಕೀರ್ಣವಾಗಿವೆ.
- ಗುರಿ ಪರಿಸರ: ನಿಯೋಜನೆ ಪರಿಸರದ ಸಾಮರ್ಥ್ಯಗಳು ಮತ್ತು ಮಿತಿಗಳು (ಉದಾ., ಕ್ಲೌಡ್, ಎಂಬೆಡೆಡ್ ಸಿಸ್ಟಮ್ಸ್) ನಿಮ್ಮ ಆಯ್ಕೆಯ ಮೇಲೆ ಪ್ರಭಾವ ಬೀರಬಹುದು.
ಜಿಸಿ ಆಪ್ಟಿಮೈಸೇಶನ್ಗಾಗಿ ಪ್ರಾಯೋಗಿಕ ಸಲಹೆಗಳು
ಸರಿಯಾದ ಅಲ್ಗಾರಿದಮ್ ಅನ್ನು ಆಯ್ಕೆ ಮಾಡುವುದರ ಹೊರತಾಗಿ, ನೀವು ಜಿಸಿ ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ಆಪ್ಟಿಮೈಜ್ ಮಾಡಬಹುದು:
- ಜಿಸಿ ಪ್ಯಾರಾಮೀಟರ್ಗಳನ್ನು ಟ್ಯೂನ್ ಮಾಡಿ: ಹೆಚ್ಚಿನ ರನ್ಟೈಮ್ಗಳು ಜಿಸಿ ಪ್ಯಾರಾಮೀಟರ್ಗಳನ್ನು (ಉದಾ., ಹೀಪ್ ಗಾತ್ರ, ಜನರೇಷನ್ ಗಾತ್ರಗಳು, ನಿರ್ದಿಷ್ಟ ಕಲೆಕ್ಟರ್ ಆಯ್ಕೆಗಳು) ಟ್ಯೂನ್ ಮಾಡಲು ಅನುಮತಿಸುತ್ತವೆ. ಇದಕ್ಕೆ ಸಾಮಾನ್ಯವಾಗಿ ಪ್ರೊಫೈಲಿಂಗ್ ಮತ್ತು ಪ್ರಯೋಗದ ಅಗತ್ಯವಿರುತ್ತದೆ.
- ಆಬ್ಜೆಕ್ಟ್ ಪೂಲಿಂಗ್: ಪೂಲಿಂಗ್ ಮೂಲಕ ಆಬ್ಜೆಕ್ಟ್ಗಳನ್ನು ಮರುಬಳಕೆ ಮಾಡುವುದರಿಂದ ಹಂಚಿಕೆಗಳು ಮತ್ತು ಡಿಅಲೋಕೇಶನ್ಗಳ ಸಂಖ್ಯೆಯನ್ನು ಕಡಿಮೆ ಮಾಡಬಹುದು, ಇದರಿಂದಾಗಿ ಜಿಸಿ ಒತ್ತಡ ಕಡಿಮೆಯಾಗುತ್ತದೆ.
- ಅನಗತ್ಯ ಆಬ್ಜೆಕ್ಟ್ ರಚನೆಯನ್ನು ತಪ್ಪಿಸಿ: ಹೆಚ್ಚಿನ ಸಂಖ್ಯೆಯ ಅಲ್ಪಾವಧಿಯ ಆಬ್ಜೆಕ್ಟ್ಗಳನ್ನು ರಚಿಸುವ ಬಗ್ಗೆ ಜಾಗರೂಕರಾಗಿರಿ, ಏಕೆಂದರೆ ಇದು ಜಿಸಿಗಾಗಿ ಕೆಲಸವನ್ನು ಹೆಚ್ಚಿಸಬಹುದು.
- ವೀಕ್/ಸಾಫ್ಟ್ ರೆಫರೆನ್ಸ್ಗಳನ್ನು ಜ್ಞಾನದಿಂದ ಬಳಸಿ: ಈ ರೆಫರೆನ್ಸ್ಗಳು ಮೆಮೊರಿ ಕಡಿಮೆಯಿದ್ದರೆ ಆಬ್ಜೆಕ್ಟ್ಗಳನ್ನು ಸಂಗ್ರಹಿಸಲು ಅನುಮತಿಸುತ್ತವೆ, ಇದು ಕ್ಯಾಶ್ಗಳಿಗೆ ಉಪಯುಕ್ತವಾಗಬಹುದು.
- ನಿಮ್ಮ ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ಪ್ರೊಫೈಲ್ ಮಾಡಿ: ಜಿಸಿ ನಡವಳಿಕೆಯನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು, ದೀರ್ಘ ವಿರಾಮಗಳನ್ನು ಗುರುತಿಸಲು, ಮತ್ತು ಜಿಸಿ ಓವರ್ಹೆಡ್ ಹೆಚ್ಚಿರುವ ಪ್ರದೇಶಗಳನ್ನು ಪತ್ತೆಹಚ್ಚಲು ಪ್ರೊಫೈಲಿಂಗ್ ಪರಿಕರಗಳನ್ನು ಬಳಸಿ. ವಿಷುಯಲ್ವಿಎಂ, ಜೆಕನ್ಸೋಲ್ (ಜಾವಾಕ್ಕಾಗಿ), ಪರ್ಫ್ವ್ಯೂ (.ನೆಟ್ಗಾಗಿ), ಮತ್ತು `pprof` (ಗೋ ಗಾಗಿ) ನಂತಹ ಪರಿಕರಗಳು ಅಮೂಲ್ಯವಾಗಿವೆ.
ಗಾರ್ಬೇಜ್ ಕಲೆಕ್ಷನ್ನ ಭವಿಷ್ಯ
ಇನ್ನೂ ಕಡಿಮೆ ಲೇಟೆನ್ಸಿಗಳು ಮತ್ತು ಹೆಚ್ಚಿನ ದಕ್ಷತೆಯ ಅನ್ವೇಷಣೆ ಮುಂದುವರಿದಿದೆ. ಭವಿಷ್ಯದ ಜಿಸಿ ಸಂಶೋಧನೆ ಮತ್ತು ಅಭಿವೃದ್ಧಿಯು ಇವುಗಳ ಮೇಲೆ ಗಮನಹರಿಸುವ ಸಾಧ್ಯತೆಯಿದೆ:
- ವಿರಾಮಗಳ ಮತ್ತಷ್ಟು ಕಡಿತ: ನಿಜವಾಗಿಯೂ "ವಿರಾಮ-ರಹಿತ" ಅಥವಾ "ವಿರಾಮ-ರಹಿತಕ್ಕೆ ಸಮೀಪದ" ಸಂಗ್ರಹಣೆಯನ್ನು ಗುರಿಯಾಗಿಸಿಕೊಳ್ಳುವುದು.
- ಹಾರ್ಡ್ವೇರ್ ನೆರವು: ಹಾರ್ಡ್ವೇರ್ ಜಿಸಿ ಕಾರ್ಯಾಚರಣೆಗಳಿಗೆ ಹೇಗೆ ಸಹಾಯ ಮಾಡಬಹುದು ಎಂಬುದನ್ನು ಅನ್ವೇಷಿಸುವುದು.
- AI/ML-ಚಾಲಿತ ಜಿಸಿ: ಅಪ್ಲಿಕೇಶನ್ ನಡವಳಿಕೆ ಮತ್ತು ಸಿಸ್ಟಮ್ ಲೋಡ್ಗೆ ಕ್ರಿಯಾತ್ಮಕವಾಗಿ ಜಿಸಿ ಕಾರ್ಯತಂತ್ರಗಳನ್ನು ಅಳವಡಿಸಿಕೊಳ್ಳಲು ಯಂತ್ರ ಕಲಿಕೆಯನ್ನು ಸಂಭಾವ್ಯವಾಗಿ ಬಳಸುವುದು.
- ಅಂತರ್ಕಾರ್ಯಾಚರಣೆ (Interoperability): ವಿವಿಧ ಜಿಸಿ ಅನುಷ್ಠಾನಗಳು ಮತ್ತು ಭಾಷೆಗಳ ನಡುವೆ ಉತ್ತಮ ಏಕೀಕರಣ ಮತ್ತು ಅಂತರ್ಕಾರ್ಯಾಚರಣೆ.
ತೀರ್ಮಾನ
ಗಾರ್ಬೇಜ್ ಕಲೆಕ್ಷನ್ ಆಧುನಿಕ ರನ್ಟೈಮ್ ಸಿಸ್ಟಮ್ಗಳ ಮೂಲಾಧಾರವಾಗಿದೆ, ಅಪ್ಲಿಕೇಶನ್ಗಳು ಸುಗಮವಾಗಿ ಮತ್ತು ದಕ್ಷವಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುವುದನ್ನು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಲು ಮೌನವಾಗಿ ಮೆಮೊರಿಯನ್ನು ನಿರ್ವಹಿಸುತ್ತದೆ. ಮೂಲಭೂತ ಮಾರ್ಕ್-ಅಂಡ್-ಸ್ವೀಪ್ನಿಂದ ಹಿಡಿದು ಅತಿ-ಕಡಿಮೆ-ಲೇಟೆನ್ಸಿಯ ಝೆಡ್ಜಿಸಿ ವರೆಗೆ, ಪ್ರತಿಯೊಂದು ಅಲ್ಗಾರಿದಮ್ ಮೆಮೊರಿ ನಿರ್ವಹಣೆಯನ್ನು ಉತ್ತಮಗೊಳಿಸುವಲ್ಲಿ ಒಂದು ವಿಕಸನೀಯ ಹಂತವನ್ನು ಪ್ರತಿನಿಧಿಸುತ್ತದೆ. ಜಗತ್ತಿನಾದ್ಯಂತದ ಡೆವಲಪರ್ಗಳಿಗೆ, ಈ ತಂತ್ರಗಳ ದೃಢವಾದ ತಿಳುವಳಿಕೆಯು ಅವರಿಗೆ ಹೆಚ್ಚು ಕಾರ್ಯಕ್ಷಮತೆಯುಳ್ಳ, ಸ್ಕೇಲೆಬಲ್, ಮತ್ತು ವಿಶ್ವಾಸಾರ್ಹ ಸಾಫ್ಟ್ವೇರ್ ಅನ್ನು ನಿರ್ಮಿಸಲು ಅಧಿಕಾರ ನೀಡುತ್ತದೆ, ಅದು ವೈವಿಧ್ಯಮಯ ಜಾಗತಿಕ ಪರಿಸರದಲ್ಲಿ ಅಭಿವೃದ್ಧಿ ಹೊಂದಬಲ್ಲದು. ವಹಿವಾಟುಗಳನ್ನು ಅರ್ಥಮಾಡಿಕೊಂಡು ಮತ್ತು ಉತ್ತಮ ಅಭ್ಯಾಸಗಳನ್ನು ಅನ್ವಯಿಸುವ ಮೂಲಕ, ನಾವು ಮುಂದಿನ ಪೀಳಿಗೆಯ ಅಸಾಧಾರಣ ಅಪ್ಲಿಕೇಶನ್ಗಳನ್ನು ರಚಿಸಲು ಜಿಸಿಯ ಶಕ್ತಿಯನ್ನು ಬಳಸಿಕೊಳ್ಳಬಹುದು.